package com.engine.salary.entity.salaryacct.po;

import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.annotation.Auth;
import com.engine.salary.annotation.I18n;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * 薪资核算人员
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
@Data
@Builder
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
//hrsa_salary_acct_emp
@ElogTransform(name = "薪资核算人员")
@Auth(page = "salaryAcct")
public class SalaryAcctEmployeePO {

    /**
     * 主键id
     */
    @ElogTransform(name = "主键id")
    private Long id;

    /**
     * 薪资核算的id
     */
    @ElogTransform(name = "核算记录id")
    @SalaryFormulaVar(defaultLabel = "核算记录id", labelId = 86321, dataType = "number")
    private Long salaryAcctRecordId;

    /**
     * 薪资账套id
     */
    @ElogTransform(name = "薪资账套id")
    @SalaryFormulaVar(defaultLabel = "薪资账套id", labelId = 86321, dataType = "number")
    private Long salarySobId;

    /**
     * 人员id
     */
    @ElogTransform(name = "人员id")
    @SalaryFormulaVar(defaultLabel = "人员id", labelId = 86321, dataType = "number")
    private Long employeeId;

    /**
     * 人员类型,0或null组织架构,1非系统人员
     *
     * @see DataCollectionEmployeeTypeEnum
     */
    @ElogTransform(name = "人员类型")
    private Integer employeeType;

    /**
     * 个税扣缴义务人id
     */
    @ElogTransform(name = "个税扣缴义务人id")
    @SalaryFormulaVar(defaultLabel = "个税扣缴义务人id", labelId = 86321, dataType = "number")
    private Long taxAgentId;

    /**
     * 薪资所属月
     */
    @ElogTransform(name = "薪资所属月")
    @SalaryFormulaVar(defaultLabel = "薪资所属月", labelId = 86321, dataType = "string")
    private Date salaryMonth;

    /**
     * 租户key
     */
    @ElogTransform(name = "租户key")
    private String tenantKey;

    /**
     * 创建人id
     */
    @ElogTransform(name = "创建人id")
    private Long creator;

    /**
     * 是否删除
     */
    @ElogTransform(name = "是否删除")
    private Integer deleteType;

    /**
     * 创建时间
     */
    @ElogTransform(name = "创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @ElogTransform(name = "更新时间")
    private Date updateTime;


    @Deprecated
    @ElogTransform(name = "锁定状态")
    private Integer lockStatus;

    /**
     * 分部
     */
    @I18n
    @SalaryFormulaVar(defaultLabel = "分部", labelId = 86321, dataType = "string")
    private String subcompanyName;
    @SalaryFormulaVar(defaultLabel = "分部ID", labelId = 86321, dataType = "string")
    private Long subcompanyId;
    /**
     * 部门
     */
    @I18n
    @SalaryFormulaVar(defaultLabel = "部门", labelId = 86321, dataType = "string")
    private String departmentName;
    @SalaryFormulaVar(defaultLabel = "部门ID", labelId = 86321, dataType = "string")
    private Long departmentId;
    /**
     * 岗位
     */
    @I18n
    @SalaryFormulaVar(defaultLabel = "岗位", labelId = 86321, dataType = "string")
    private String jobtitleName;
    @SalaryFormulaVar(defaultLabel = "岗位ID", labelId = 86321, dataType = "string")
    private Long jobtitleId;
    /**
     * 职称
     */
    @I18n
    @SalaryFormulaVar(defaultLabel = "职称", labelId = 86321, dataType = "string")
    private String jobcall;
    @SalaryFormulaVar(defaultLabel = "职称ID", labelId = 86321, dataType = "string")
    private Long jobcallId;
    /**
     * 状态
     */
    @SalaryFormulaVar(defaultLabel = "状态编码", labelId = 86321, dataType = "string")
    private String status;

    //锁定的项目
    private List<Long> lockItems;


    /**
     * 主次账号   0/null：主账号    1：次账号
     */
    private Integer accountType;



    //--------条件----------
    //主键id集合
    private Collection<Long> ids;

    private Collection<Long> taxAgentIds;

    private Collection<Long> salaryAcctRecordIds;
    private Collection<Long> salarySobIds;

    private Collection<Long> employeeIds;

    private Collection<Date> salaryMonths;
}
